package com.gp.ssmplus.base.core.mybatis.interceptor;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.gp.ssmplus.base.core.mybatis.entity.EntityMap;
import com.gp.ssmplus.base.core.mybatis.model.PageModel;
import com.gp.ssmplus.base.core.mybatis.model.ResultBody;
import com.gp.ssmplus.base.core.mybatis.query.CriteriaQuery;

import java.util.List;


/**
 * 扩展分页处理器接口拦截器
 */
public interface PageInterceptor {

    /**
     * 条件验证
     *
     * @return
     */
    default ResultBody validate(CriteriaQuery cq) {
        return ResultBody.ok();
    }

    /**
     * 条件预处理
     *
     * @return
     */
    void prepare(CriteriaQuery cq, PageModel model, EntityMap params);


    /**
     * 扩展返回结果
     *
     * @param result 分页结果集
     * @param extra  扩展数据存储
     * @return
     */
    default void complete(CriteriaQuery cq, List<EntityMap> result, EntityMap extra) {

    }

    /**
     * 扩展返回结果
     *
     * @param result 分页结果集
     * @param extra  扩展数据存储
     * @return
     */
    default void complete(CriteriaQuery cq, IPage<EntityMap> page, EntityMap extra) {

    }


}
